#include "LinearMath/btTransform.h"
#ifdef __cplusplus
extern "C" {
#endif
btTransformFloatData* bullet_NewbtTransformFloatData(){
	btTransformFloatData* wrap_out = new btTransformFloatData();
	return wrap_out;
}

btMatrix3x3FloatData* bullet_btTransformFloatData_GetFieldOfM_basis(btTransformFloatData* c_this){
	return (btMatrix3x3FloatData*)(&c_this->m_basis);
}

btVector3FloatData* bullet_btTransformFloatData_GetFieldOfM_origin(btTransformFloatData* c_this){
	return (btVector3FloatData*)(&c_this->m_origin);
}

btTransformDoubleData* bullet_NewbtTransformDoubleData(){
	btTransformDoubleData* wrap_out = new btTransformDoubleData();
	return wrap_out;
}

btMatrix3x3DoubleData* bullet_btTransformDoubleData_GetFieldOfM_basis(btTransformDoubleData* c_this){
	return (btMatrix3x3DoubleData*)(&c_this->m_basis);
}

btVector3DoubleData* bullet_btTransformDoubleData_GetFieldOfM_origin(btTransformDoubleData* c_this){
	return (btVector3DoubleData*)(&c_this->m_origin);
}

btTransform* bullet_NewbtTransform(){
	btTransform* wrap_out = new btTransform();
	return wrap_out;
}

btTransform* bullet_NewbtTransform1(btQuaternion* q,btVector3* c){
	btQuaternion const& c_arg_q=(btQuaternion const&)(*q);
	btVector3 const& c_arg_c=(btVector3 const&)(*c);
	btTransform* wrap_out = new btTransform(c_arg_q,c_arg_c);
	return wrap_out;
}

btTransform* bullet_NewbtTransform2(btMatrix3x3* b,btVector3* c){
	btMatrix3x3 const& c_arg_b=(btMatrix3x3 const&)(*b);
	btVector3 const& c_arg_c=(btVector3 const&)(*c);
	btTransform* wrap_out = new btTransform(c_arg_b,c_arg_c);
	return wrap_out;
}

btTransform* bullet_NewbtTransform3(btTransform* other){
	btTransform const& c_arg_other=(btTransform const&)(*other);
	btTransform* wrap_out = new btTransform(c_arg_other);
	return wrap_out;
}

void bullet_btTransform_deSerialize(btTransform* c_this,btTransformDoubleData* dataIn){
	btTransformDoubleData const& c_arg_dataIn=(btTransformDoubleData const&)(*dataIn);
	c_this->deSerialize(c_arg_dataIn);
}

void bullet_btTransform_deSerializeDouble(btTransform* c_this,btTransformDoubleData* dataIn){
	btTransformDoubleData const& c_arg_dataIn=(btTransformDoubleData const&)(*dataIn);
	c_this->deSerializeDouble(c_arg_dataIn);
}

void bullet_btTransform_deSerializeFloat(btTransform* c_this,btTransformFloatData* dataIn){
	btTransformFloatData const& c_arg_dataIn=(btTransformFloatData const&)(*dataIn);
	c_this->deSerializeFloat(c_arg_dataIn);
}

btMatrix3x3* bullet_btTransform_getBasis(btTransform* c_this){
	btMatrix3x3& c_out = c_this->getBasis();
	btMatrix3x3* wrap_out = (btMatrix3x3*)(&c_out);
	return wrap_out;
}

btMatrix3x3* bullet_btTransform_getBasis1(btTransform* c_this){
	btMatrix3x3 const& c_out = c_this->getBasis();
	btMatrix3x3* wrap_out = (btMatrix3x3*)(&c_out);
	return wrap_out;
}

btTransform* bullet_btTransform_getIdentity(btTransform* c_this){
	btTransform const& c_out = c_this->getIdentity();
	btTransform* wrap_out = (btTransform*)(&c_out);
	return wrap_out;
}

void bullet_btTransform_getOpenGLMatrix(btTransform* c_this,double* m){
	btScalar * c_arg_m=(btScalar *)(void*)(m);
	c_this->getOpenGLMatrix(c_arg_m);
}

btVector3* bullet_btTransform_getOrigin(btTransform* c_this){
	btVector3& c_out = c_this->getOrigin();
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

btVector3* bullet_btTransform_getOrigin1(btTransform* c_this){
	btVector3 const& c_out = c_this->getOrigin();
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

btQuaternion* bullet_btTransform_getRotation(btTransform* c_this){
	btQuaternion c_out = c_this->getRotation();
	btQuaternion* wrap_out = new btQuaternion(c_out);
	return wrap_out;
}

btTransform* bullet_btTransform_inverse(btTransform* c_this){
	btTransform c_out = c_this->inverse();
	btTransform* wrap_out = new btTransform(c_out);
	return wrap_out;
}

btTransform* bullet_btTransform_inverseTimes(btTransform* c_this,btTransform* t){
	btTransform const& c_arg_t=(btTransform const&)(*t);
	btTransform c_out = c_this->inverseTimes(c_arg_t);
	btTransform* wrap_out = new btTransform(c_out);
	return wrap_out;
}

btVector3* bullet_btTransform_invXform(btTransform* c_this,btVector3* inVec){
	btVector3 const& c_arg_inVec=(btVector3 const&)(*inVec);
	btVector3 c_out = c_this->invXform(c_arg_inVec);
	btVector3* wrap_out = new btVector3(c_out);
	return wrap_out;
}

void bullet_btTransform_mult(btTransform* c_this,btTransform* t1,btTransform* t2){
	btTransform const& c_arg_t1=(btTransform const&)(*t1);
	btTransform const& c_arg_t2=(btTransform const&)(*t2);
	c_this->mult(c_arg_t1,c_arg_t2);
}

void bullet_btTransform_serialize(btTransform* c_this,btTransformDoubleData* dataOut){
	btTransformDoubleData& c_arg_dataOut=(btTransformDoubleData&)(*dataOut);
	c_this->serialize(c_arg_dataOut);
}

void bullet_btTransform_serializeFloat(btTransform* c_this,btTransformFloatData* dataOut){
	btTransformFloatData& c_arg_dataOut=(btTransformFloatData&)(*dataOut);
	c_this->serializeFloat(c_arg_dataOut);
}

void bullet_btTransform_setBasis(btTransform* c_this,btMatrix3x3* basis){
	btMatrix3x3 const& c_arg_basis=(btMatrix3x3 const&)(*basis);
	c_this->setBasis(c_arg_basis);
}

void bullet_btTransform_setFromOpenGLMatrix(btTransform* c_this,double* m){
	btScalar const * c_arg_m=(btScalar const *)(void*)(m);
	c_this->setFromOpenGLMatrix(c_arg_m);
}

void bullet_btTransform_setIdentity(btTransform* c_this){
	c_this->setIdentity();
}

void bullet_btTransform_setOrigin(btTransform* c_this,btVector3* origin){
	btVector3 const& c_arg_origin=(btVector3 const&)(*origin);
	c_this->setOrigin(c_arg_origin);
}

void bullet_btTransform_setRotation(btTransform* c_this,btQuaternion* q){
	btQuaternion const& c_arg_q=(btQuaternion const&)(*q);
	c_this->setRotation(c_arg_q);
}

#ifdef __cplusplus
}
#endif
